<?php


namespace app\common\model;


use app\common\traites\TraitModel;
use think\Model;

class AgentLavel extends Model
{
    use TraitModel;

    public $name = 'common_agent_level';

    //查询统计该用户分销链的总分销比例
    public static function agent_sale($agent_id)
    {
        if ($agent_id <= 0) return 0;
        //得到该用户的所有上级
        $user = self::agent_pid($agent_id);
        if (!$user) return 0;
        //查询该用户所有上级的分销比例 和该用户的分销比例
        $map = implode('|', $user) . '|' . $user;
        return UserModel::where($map, 'id')->sum('agent_rate');
    }

    public static function agent_pid($agent_id)
    {
        if ($agent_id <= 0) return 0;
        //查询用户所有上级,包含自己
        $user = self::where('agent_id', $agent_id)->column('agent_pid');
        array_push($user, $agent_id);
        return $user;
    }

    public static function agent_rate($agent_id, $edit = false)
    {
        $agent_id = intval($agent_id);
        //查询这个人的顶级
        $find = self::where('agent_id', $agent_id)->where('agent_pid_level', 0)->find();

        if (empty($find)) return 0;
        //等于 0是顶级
        $number = 0;
        if ($find->agent_pid == 0) {
            $find->agent_pid=$agent_id;
        } else{
            //不是顶级的时候查询顶级的分销比例
            $number +=UserModel::where('id',$find->agent_pid)->value('agent_rate');
        }

        //查询所有该顶级下面的人员,加上顶级自己的分销
        // $sum = self::where('agent_pid|id', $find->agent_pid);
        $sum = self::where('agent_pid', $find->agent_pid);
        if ($edit) $sum->where('agent_id', '<>', $agent_id);
        $number+=$sum->sum('rate');
        return $number;
    }

    //修改的时候查询的统计分销不能包括需要修改的人，包括就多算了
    public static function agent_down_all($agent_id, $edit = false)
    {
        if ($agent_id <= 0) return 0;
        return self::agent_rate($agent_id, $edit);
//        //查询用户所有上级下级的分销比例，包括自己
//        if ($agent_id <= 0) return 0;
//        $down_user = self::agent_down($agent_id);
//        $top_user = self::agent_pid($agent_id);
//        //合并两个数组
//        $user = array_unique(array_merge($down_user,$top_user));
//        //查询该用户所有的分销比例 和该用户的分销比例
//        $map = implode(',', $user);
//        return UserModel::whereIn('id', $map)->sum('agent_rate');
    }

    public static function agent_down($agent_id)
    {
        //查询该用户所有下级
        $user = self::where('agent_pid', $agent_id)->column('agent_id');
        array_push($user, $agent_id);
        return $user;
    }
}